/*
 * config.c
 *
 *  Created on: 06/10/2011
 *      Author: utn_so
 */


/* Funcion Global a los Procesos que permite, obtener datos de cfg, de acuerdo a un Path,un Token y retorna en la direccion de memoria que le
 * pasamos como ultimo parametro  */

#include "config.h"

int32_t liberarMemoria (char **memoriaALiberar)
{
	if (*memoriaALiberar == NULL)
		return 1;
	free(*memoriaALiberar);
	*memoriaALiberar = NULL;
	return 0;
}

int32_t leerConfiguracion (const char *spPathCfg,char *spToken, char **spCadenaObtenida)
{
    char *palabra; //Variable local auxiliar
	char *spTokenSafe;
	FILE* fichero;
    char buffer[TAMSECTOR];

    if((fichero=fopen(spPathCfg,"r"))==NULL)
	{
    	printf("El archivo de configuracion \"%s\" no existe.\n",spPathCfg);
	    return Retorno_Error;
	}
	while (feof (fichero) == 0 )
	{
	   fgets(buffer,sizeof(buffer),fichero);
	   //buffer[strlen(buffer)]='\0';
	   palabra = strtok_r(buffer,"=",&spTokenSafe);
	   if((strcmp(palabra,spToken))==0)
		{
		palabra=strtok_r(NULL,"\n",&spTokenSafe);
		*spCadenaObtenida=(char*) malloc (sizeof(char)*(strlen(palabra)+1));
		strcpy(*spCadenaObtenida,palabra);
		fclose(fichero);
		return Retorno_OK;
		}
	}

	printf("No se encontro la expresion en la cfg\n");
	fclose(fichero);
	return Retorno_Error;
}
